package com.example.lotterysystem.common.utils;

import cn.hutool.core.lang.UUID;
import com.cloopen.rest.sdk.BodyType;
import com.cloopen.rest.sdk.CCPRestSmsSDK;
import org.springframework.context.annotation.Configuration;

import java.util.HashMap;
import java.util.Set;

public class SMSUtil {

    /**
     *
     * @param phoneNumber 手机号
     * @param code 验证码
     * @param templateCode 模版号
     */


    public static void sendSMS(String phoneNumber,String code,String templateCode){

            //生产环境请求地址：app.cloopen.com
            String serverIp = "app.cloopen.com";
            //请求端口
            String serverPort = "8883";
            //主账号,登陆云通讯网站后,可在控制台首页看到开发者主账号ACCOUNT SID和主账号令牌AUTH TOKEN
            String accountSId = "2c94811c946f6bfb019759b3e2cf110e";
            String accountToken = "d65bb141e2e64f7bb9f9a03f441c85c8";
            //请使用管理控制台中已创建应用的APPID
            String appId = "2c94811c946f6bfb019759b3e4501115";
            CCPRestSmsSDK sdk = new CCPRestSmsSDK();
            sdk.init(serverIp, serverPort);
            sdk.setAccount(accountSId, accountToken);
            sdk.setAppId(appId);
            sdk.setBodyType(BodyType.Type_JSON);
            String to = phoneNumber;  // 仅可以测试官网中填入的测试号码
            String templateId= "1";
            // 测试开发支持的文案如下:【云通讯】您的验证码是{1}，请于{2}分钟内正确输入。其中{1}和{2}为短信模板参数。
            // 随机一个验证码验证码

            String[] datas = {code, "1"};
            String subAppend="1234";  //可选 扩展码，四位数字 0~9999
            String reqId= UUID.randomUUID().toString();  //可选 第三方自定义消息id，最大支持32位英文数字，同账号下同一自然天内不允许重复
            //HashMap<String, Object> result = sdk.sendTemplateSMS(to,templateId,datas);
            HashMap<String, Object> result = sdk.sendTemplateSMS(to,templateId,datas,subAppend,reqId);
            if("000000".equals(result.get("statusCode"))){
                //正常返回输出data包体信息（map）
                HashMap<String,Object> data = (HashMap<String, Object>) result.get("data");
                Set<String> keySet = data.keySet();
                for(String key:keySet){
                    Object object = data.get(key);
                    System.out.println(key +" = "+object);
                    System.out.println("手机号: " + to + ", 验证码: " + code);
                }
            }else{
                //异常返回输出错误码和错误信息
                System.out.println("错误码=" + result.get("statusCode") +" 错误信息= "+result.get("statusMsg"));
            }

    }
}
